/////precompiled////////
#include "precompiled.h"
////////////////////////


#include "prs_FrmBuildStyle.h"
using namespace prs;

// TFrmBuildStyle /////////////////////////////////////////////////////////////

//
void TFrmBuildStyle::Visit(TNodeRoot &Node)
{
  Node.AcceptChildren(*this);
  frm::control::TString::TStyle::GetDefault().CalcFontAll();
}

//
void TFrmBuildStyle::Visit(TNodeUnit &Node)
{
  Node.AcceptChildren(*this);
  //frm::control::TString::TStyle::GetDefault().CalcFontAll();
}

//
void TFrmBuildStyle::Visit(TNodeStyle &Node)
{
  TFrmBuildStyle Param(*this);
    Param.parentStyle = Node.ParentStyle.GetValue();

  if (Param.parentStyle) for (int N = 0; N < Param.parentStyle->OldChildren.Array.Count(); N++) {
    TNodeStyleControl *ParentStyleControl = dynamic_cast<TNodeStyleControl*>(
      &Param.parentStyle->OldChildren.Array.Get(N)
    );
    
    if (!Node.SearchStyleControlByType(ParentStyleControl->GetNodeType())) {
      Node.OldChildren.Array.Add(ParentStyleControl->New(),true);
    }
  }

  Node.AcceptChildren(Param);
}
